package com.yuanhang.readsms.service;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.IBinder;

import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;

import com.yuanhang.readsms.MainActivity;
import com.yuanhang.readsms.R;

/**
 * created by cwj on 2024-8-20
 * Description: 前台通知服务
 */
public class ForegroundService extends Service {

    @Override
    public void onCreate() {
        super.onCreate();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            CharSequence name = getString(R.string.app_name);
            int importance = NotificationManager.IMPORTANCE_DEFAULT;
            NotificationChannel channel = new NotificationChannel("CHANNEL_ID", name, importance);
            channel.setDescription("前台服务守护进程");
            NotificationManager notificationManager = getSystemService(NotificationManager.class);
            notificationManager.createNotificationChannel(channel);
        }

        //设置服务跳转
        Intent intent = new Intent(this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, intent,
                PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "CHANNEL_ID")
                // 设置通知的小图标。
                .setSmallIcon(R.mipmap.ic_launcher)
                //设置通知的标题。
                .setContentTitle(getString(R.string.app_name))
                //设置通知的内容
                .setContentText("进程守护中")
                //设置通知的优先级。
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                //震动模式的通知在Android O及以上。
                .setVibrate(new long[]{0, 1000, 500, 1000})
                //在Android O及以上的系统上使用LED光色和微信号。
                .setLights(Color.RED, 1000, 1000)
                //设置Android O及以上版本的通知声音。
                .setSound(Uri.parse("android.resource://" + this.getPackageName() + "/raw/notification_sound"))
                //如果需要，在Android O及以上版本设置较大的通知标题。
                // .setLargeTitle("Large Title Text")
                //如果需要，在Android O及以上版本设置通知的子文本。
                // .setSubText("Sub Text")
                //如果需要，在Android O及以上版本设置大字体通知。
                // .setStyle(new NotificationCompat.BigTextStyle().bigText("Big Text"))
                //如果需要，在Android O及以上版本设置通知摘要文本(当有多个具有相同优先级的通知时显示摘要文本)。
                // .setSummaryText("Summary Text")
                //如果需要，在通知中添加动作按钮(可用于启动活动或发送广播)。
                // .addAction(R.drawable.ic_action, "Action Title", PendingIntent)
                //设置可点击跳转
                .setContentIntent(pendingIntent);
        // 将通知设置为前台服务
        startForeground(1, builder.build());
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // 在这里执行需要在前台运行的任务

        // 返回START_STICKY表示服务在被杀死后会自动重启
        return START_STICKY;
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

//    @Override
//    public void onDestroy() {
//        super.onDestroy();
//
//        // 停止前台服务
//        stopForeground(true);
//        stopSelf();
//    }
}
